//
//  InstanceTypeTest.h
//  LearnRAC
//
//  Created by wangrui on 14-1-10.
//  Copyright (c) 2014年 PPS. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 * init 时是id,instance是没有区别的，你看着是id，其实编译器已经给你换成instance了
 * 工厂(类)方法时就有区别了。
 *
 * 总结：
 * 1. instancetype 只能作为返回值，而id还可以作为参数。
 * 2. instancetype 还可以判断是哪个类的实例，进而在编译时，如果发送的不是这个类的方法时报错。
      简单的说：可以向id发送任何方法,但只能向instancetype发送该类的实例方法
 * 3. init编译器的默认实现时返回 instancetype。 而类方法返回的id才代表时真正的id类型
 * 4. 在一个类要返回类示例时,尽可能用instancetype
 */

@interface InstanceTypeTest : NSObject

//测试一
//+ (id)createInstance;

+ (instancetype)createInstance;

- (void)test;

@end

